[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mondrian
Subject:    [Mondrian] RE: TPC-H
From:       "Julian Hyde" <jhyde () pentaho ! org>
Date:       2008-03-25 22:19:35
Message-ID: 1DD968698377479DB9D114CDE3F848DF () mackerel
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Sherman,
 
Haven't heard anything about this for a while. The 3 main things I need are
a tpch data generator/loader, a mondrian schema based on the tpch schema,
and a set of mdx queries. Any progress on any of these?
 
I want to make a start on benchmarking, so if you don't have something to
check in soon I'm going to have to start building them myself.

Julian


  _____  

From: Julian Hyde [mailto:jhyde@pentaho.org] 
Sent: Saturday, December 22, 2007 12:06 PM
To: 'Mondrian developer mailing list'
Subject: RE: TPC-H


It would be very exciting an useful to include TPC-H alongside FoodMart as a
test dataset. First, it will give use testing coverage on a different kind
of schema; second, it will allow us to do some performance benchmarks,
because the dataset can easily be scaled up to larger data sizes. Lastly, it
could be the basis for performance regression tests (i.e. tests which detect
that we have gotten slower).
 
I'd like to replicate the foodmart pattern as far as possible:

*	

	demo/Tpch.xml schema file
*	

	testsrc/.../MondrianTpchLoader.java loader program
*	

	instructions in install.html describing how to load the data
*	

	tests in the junit regression suite which run if the database is
present
*	

	aggregate tables, created by the loader program and populated by a
SQL script (compare testsrc/main/mondrian/test/loader/insert.sql)

I think these steps could be done quite easily.
 
There are a few differences:

*	

	We don't require the TPC-H data set to be present in order for the
regression suite to run; if it is not present, tests will recuse themselves
(and trivially succeed)
*	

	The TPC-H benchmark allows the database to be created at different
scales (e.g. one with 100MB, one with 1GB). The tests should know which
scale of data they are running against. Some tests might be able to run on
any scale of the data, other tests might only run on one particular scale,
and recuse themselves (trivially succeed) if the desired data set is not
present.
*	

	Sherman proposes a variant to the TPC-H schema where the line_items
table is more like a fact table. I don't want to mess with the 'official'
table structure, so why not create an additional table LINE_ITEM_FACT? The
mondrian TPC-H schema could have cubes based on each line item table, to
compare.

The trickiest thing will be passing in the connect string to the test suite.
A lot of the mondrian test suite assumes that there is just one connection,
the connection to foodmart. It is reasonable to assume that tpch, if it
exists, is in the same database as foodmart, but we could not assume that it
is in the same schema. The foodmart connect string is variously read from
mondrian.properties, or read from build.properties and passed in when ant
invokes junit, or pieced together from other properties.
 
Julian



  _____  

From: mondrian-bounces@pentaho.org [mailto:mondrian-bounces@pentaho.org] On
Behalf Of Sherman Wood
Sent: Friday, December 21, 2007 5:57 PM
To: jhyde@pentaho.org; 'Agustin Campos'
Cc: mondrian@pentaho.org
Subject: RE: [Mondrian] NON EMPTY + exception



I’ll test it out against HEAD and raise a bug if needed.

 

Yeah, we talked about doing a scalability test using TPC-H a while ago, and
now I am getting some help with that from a partner who has a large
environment – machines, disk, database.

 

I am just developing the schema now. I had few issues with the
snowflakey-ness, not the least of which is that it is a transactional model
not optimized in the way that you would like for Mondrian. I had a few
issues with Mondrian dealing with snowflakes – it was not clear how to do
joins of joins, getting the aliases right etc.

 

With the schema almost together, I am working on simulating the TPC-H test
queries in MDX, most of which are easy.

 

I could contribute this back, but how best to do it? It would make sense to
have an example TPC-H database in Mondrian in the same way as we have
Foodmart today, and a test suite against that.

 

I am also looking at using a few simple transforms of the TPC-H database
that make it more suitable for Mondrian – less snowflakey, making the
linetiem table a real fact table by adding keys on it and adding a few
indexes. These additions could also be included with a separate schema.

 

 

Sherman


  _____  


From: Julian Hyde [mailto:jhyde@pentaho.org] 
Sent: Friday, December 21, 2007 6:05 PM
To: 'Sherman Wood'; 'Agustin Campos'
Cc: mondrian@pentaho.org
Subject: RE: [Mondrian] NON EMPTY + exception

 

Sherman/Agustin,

 

Can one of you please log a bug for this? I know I just removed the
getAlias() method that Sherman referred to, but I don't think I fixed the
bug. I'll need a testcase to make sure.

 

Sherman,

 

I've been trying to persuade someone to contribute a TPC-H test suite for a
long time, and it seems like you have one working. Can you contribute it? It
would serve as a good test of mondrian's scalability and (as this case
shows) would improve coverage on a very-snowflakey schema.

 

Julian

 


  _____  


From: Sherman Wood [mailto:swood@jaspersoft.com] 
Sent: Thursday, December 20, 2007 6:47 PM
To: jhyde@pentaho.org; 'Mondrian developer mailing list'; 'Agustin Campos'
Subject: RE: [Mondrian] NON EMPTY + exception

I have this issue too.

 

>From the TPC-H data set, I have a dimension:

 

            <Dimension type="StandardDimension" name="Customer">

                        <Hierarchy name="Customer" hasAll="true"
allMemberName="All Customers" primaryKey="o_orderkey"
primaryKeyTable="orders">

                                    <Join leftKey="o_custkey"
rightAlias="customer" rightKey="c_custkey">

                                                <Table name="orders">

                                                </Table>

                                                <Join leftAlias="customer"
leftKey="c_nationkey" rightAlias="c_nation" rightKey="n_nationkey">

                                                            <Table
name="customer">

                                                            </Table>

                                                            <Join
leftAlias="c_nation" leftKey="n_regionkey" rightAlias="c_region"
rightKey="r_regionkey">

 
<Table name="nation" alias="c_nation">

 
</Table>

 
<Table name="region" alias="c_region">

 
</Table>

                                                            </Join>

                                                </Join>

                                    </Join>

                                    <Level name="Region" table="c_region"
column="r_name" type="String" uniqueMembers="true" levelType="Regular"
hideMemberIf="Never">

                                    </Level>

                                    <Level name="Nation" table="c_nation"
column="n_name" type="String" uniqueMembers="true" levelType="Regular"
hideMemberIf="Never">

                                    </Level>

                                    <Level name="Customer" table="customer"
column="c_name" type="String" uniqueMembers="false" levelType="Regular"
hideMemberIf="Never">

                                    </Level>

                        </Hierarchy>

            </Dimension>

 

With the MDX:

 

select {[Measures].[Price]} on columns,

non empty crossjoin([Commit Date].[1998].Children, [Customer].[All
Customers].[AMERICA].[UNITED STATES].Children) ON rows

from Orders

 

I get:

 

Caused by: mondrian.olap.MondrianException: Mondrian Error:Internal error:
Populating member cache with members for [[Commit Date].[Month],
[Customer.Customer].[Customer]]

      at
mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:755)

      at mondrian.olap.Util.newInternal(Util.java:1103)

      at mondrian.olap.Util.newError(Util.java:1119)

      at
mondrian.rolap.SqlTupleReader.prepareTuples(SqlTupleReader.java:415)

      at mondrian.rolap.SqlTupleReader.readTuples(SqlTupleReader.java:441)

      at
mondrian.rolap.RolapNativeSet$SetEvaluator.executeList(RolapNativeSet.java:2
37)

      at
mondrian.rolap.RolapNativeSet$SetEvaluator.executeIterable(RolapNativeSet.ja
va:159)

      at
mondrian.rolap.RolapNativeSet$SetEvaluator.execute(RolapNativeSet.java:142)

      at
mondrian.olap.fun.CrossJoinFunDef$BaseIterCalc.evaluateIterable(CrossJoinFun
Def.java:241)

      at
mondrian.calc.impl.AbstractIterCalc.evaluate(AbstractIterCalc.java:53)

      at mondrian.rolap.RolapResult.executeAxis(RolapResult.java:715)

      at mondrian.rolap.RolapResult.evalLoad(RolapResult.java:587)

      at mondrian.rolap.RolapResult.loadMembers(RolapResult.java:565)

      at mondrian.rolap.RolapResult.<init>(RolapResult.java:251)

      at mondrian.rolap.RolapConnection.execute(RolapConnection.java:414)

      ... 27 more

Caused by: mondrian.olap.MondrianException: Mondrian Error:Internal error:
join does not have alias

      at
mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:752)

      at mondrian.olap.Util.newInternal(Util.java:1096)

      at mondrian.olap.MondrianDef$Join.getAlias(MondrianDef.java:2176)

      at
mondrian.rolap.RolapHierarchy.rewriteRelationWithAliases(RolapHierarchy.java
:635)

      at
mondrian.rolap.RolapHierarchy.relationSubset(RolapHierarchy.java:554)

      at
mondrian.rolap.RolapHierarchy.lookupRelationSubset(RolapHierarchy.java:591)

      at
mondrian.rolap.RolapHierarchy.relationSubset(RolapHierarchy.java:548)

      at mondrian.rolap.RolapHierarchy.addToFrom(RolapHierarchy.java:486)

      at
mondrian.rolap.SqlTupleReader.addLevelMemberSql(SqlTupleReader.java:747)

      at
mondrian.rolap.SqlTupleReader.generateSelectForLevels(SqlTupleReader.java:66
6)

      at
mondrian.rolap.SqlTupleReader.makeLevelMembersSql(SqlTupleReader.java:633)

      at
mondrian.rolap.SqlTupleReader.prepareTuples(SqlTupleReader.java:329)

      ... 38 more

 

This is happening at the point where we are going from the lowest level join
(nation, region) up to the next join with customer.

 

mondrian.native.nonempty.enable=false does not help.

 

 

The structure in Mondrian HEAD is different, so now it does not make a call
to MondrianDef$Join.getAlias. The problem is there in Mondrian 2.3.2.

 

A fix I found was to change Mondrian.xml in the <Code> for the Join element:

 

            public String getAlias() {

                //throw Util.newInternal("join does not have alias");

                  return getLeftAlias();

            }

 

Change this line, and recompile the Mondrian.jar.

 

Sherman


  _____  


From: mondrian-bounces@pentaho.org [mailto:mondrian-bounces@pentaho.org] On
Behalf Of Julian Hyde
Sent: Wednesday, December 12, 2007 7:10 PM
To: 'Agustin Campos'
Cc: 'Mondrian developer mailing list'
Subject: RE: [Mondrian] NON EMPTY + exception

 

An error stack would help. I would like to see where
MondrianDef.Join.getAlias() is being called from.

 

I am guessing you have a snowflake schema?

 

Also, you should be able to work around this problem by setting
mondrian.native.nonempty.enable=false in mondrian.properties.

 

Julian

 


  _____  


From: Agustin Campos [mailto:aguscampos@gmail.com] 
Sent: Wednesday, December 12, 2007 12:04 AM
To: jhyde@pentaho.org; Mondrian developer mailing list
Subject: Re: [Mondrian] NON EMPTY + exception

all <join ...> has their own alias (tables' names on database) 
<join leftAlias... rightAlias... >
   < table name="table1" />
  <join ...>
       ...
      ....
   </join> 
</join>

All <join > has their own alias (left and right). 
<Table ....> doesn't.

Thanks for your answer, but, do you have any more ideas?



2007/12/12, Julian Hyde <jhyde@pentaho.org>: 

Heed the error message "join does not have alias" - check all <Join>
elements in your schema and make sure that specify leftAlias and rightAlias,
to make the join unambiguous.

 


  _____  


From: mondrian-bounces@pentaho.org [mailto:mondrian-bounces@pentaho.org] On
Behalf Of Agustin Campos
Sent: Tuesday, December 11, 2007 11:15 PM
To: Mondrian developer mailing list
Subject: [Mondrian] NON EMPTY + exception

Hello all:

I am having a little problem with my cube. It has 3 dimensions.

The case is that, when I ask something like this:

select NON EMPTY Crossjoin(Hierarchize(Union({[Dim1].[All]},
[Dim1].[All].Children)), {[Dim2].[All]}) ON COLUMNS, 
  NON EMPTY {[Dim3].[All]} ON ROWS
from [MyCube]

and then, I expand Dim1 I get an exception like this:

SqlMemberSource.getMemberChildren: executing sql [ SQL query ], exec 46 ms,
exec+fetch 46 ms, 7 rows
com.tonbeller.jpivot.olap.model.OlapException:
mondrian.olap.MondrianException: Mondrian Error:Internal error: Error while
executing query: MDX query which should work 

...
...
...
...

Caused by: mondrian.olap.MondrianException: Mondrian Error:Internal error:
join does not have alias
...
...
...

Do you have any idea about what could cause this problem? I know that I have
not sent the complete log but, I hope this could help to troubleshoot the
problem. 

I remind: It ONLY happends when I ask for non empty cells. It DOES WORK when
they are allowd.


Thank you a lot:

Agustín


_______________________________________________
Mondrian mailing list
Mondrian@pentaho.org
http://lists.pentaho.org/mailman/listinfo/mondrian




-- 
Agustín Campos Muñoz
http://www.acampos.net

Email: aguscamposENgmailPUNTOcom 
           acamposENiiesPUNTOes
MSN Messenger: acampozENhotmailPUNTOcom
Skype: acamposnet 


[Attachment #5 (text/html)]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:v = 
"urn:schemas-microsoft-com:vml" xmlns:o = 
"urn:schemas-microsoft-com:office:office" xmlns:w = 
"urn:schemas-microsoft-com:office:word" xmlns:st1 = 
"urn:schemas-microsoft-com:office:smarttags"><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6001.18000" name=GENERATOR><!--[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]--><o:SmartTagType 
namespaceuri="urn:schemas-microsoft-com:office:smarttags" 
name="country-region"></o:SmartTagType><o:SmartTagType 
namespaceuri="urn:schemas-microsoft-com:office:smarttags" 
name="place"></o:SmartTagType><o:SmartTagType 
namespaceuri="urn:schemas-microsoft-com:office:smarttags" 
name="City"></o:SmartTagType><o:SmartTagType 
namespaceuri="urn:schemas-microsoft-com:office:smarttags" 
name="PersonName"></o:SmartTagType><!--[if !mso]>
<STYLE>
st1\:*{behavior:url(#default#ieooui) }
</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:blue;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal;
	font-family:Arial;
	color:navy;}
span.EmailStyle20
	{mso-style-type:personal-reply;
	font-family:Arial;
	color:navy;}
@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 vLink=blue link=blue>
<DIV dir=ltr align=left><SPAN class=050271722-25032008><FONT face=Verdana 
color=#000080 size=2>Sherman,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=050271722-25032008><FONT face=Verdana 
color=#000080 size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=050271722-25032008><FONT face=Verdana 
color=#000080 size=2>Haven't heard anything about this for a while. The&nbsp;3 
main things I need are a tpch data generator/loader, a mondrian schema based on 
the tpch schema, and a set of mdx queries. Any progress on any of 
these?</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=050271722-25032008><FONT face=Verdana 
color=#000080 size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=050271722-25032008><FONT face=Verdana 
color=#000080 size=2>I want to make a start on benchmarking, so if you don't 
have something to check in soon I'm going to have to start building them 
myself.<BR></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=050271722-25032008><FONT face=Verdana 
color=#000080 size=2>Julian</DIV></FONT></SPAN><BR>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000080 2px solid; \
MARGIN-RIGHT: 0px">  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> Julian Hyde [mailto:jhyde@pentaho.org] 
  <BR><B>Sent:</B> Saturday, December 22, 2007 12:06 PM<BR><B>To:</B> 'Mondrian 
  developer mailing list'<BR><B>Subject:</B> RE: TPC-H<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV dir=ltr align=left><SPAN class=964063519-22122007><FONT face=Verdana 
  color=#000080 size=2>It would be very exciting an useful to include TPC-H 
  alongside FoodMart as a test dataset. First, it will give use testing coverage 
  on a different kind of schema; second, it will allow us to do some performance 
  benchmarks, because the dataset can easily be scaled up to larger data sizes. 
  Lastly, it could be the basis for performance regression tests (i.e. tests 
  which detect that we have gotten slower).</FONT></SPAN></DIV>
  <DIV dir=ltr align=left><SPAN class=964063519-22122007><FONT face=Verdana 
  color=#000080 size=2></FONT></SPAN>&nbsp;</DIV>
  <DIV dir=ltr align=left><SPAN class=964063519-22122007><FONT face=Verdana 
  color=#000080 size=2>I'd like to replicate the foodmart pattern as far as 
  possible:</FONT></SPAN></DIV>
  <UL dir=ltr>
    <LI>
    <DIV align=left><SPAN class=964063519-22122007><FONT face=Verdana 
    color=#000080 size=2>demo/Tpch.xml schema file</FONT></SPAN></DIV>
    <LI>
    <DIV align=left><SPAN class=964063519-22122007><FONT face=Verdana 
    color=#000080 size=2>testsrc/.../MondrianTpchLoader.java loader 
    program</FONT></SPAN></DIV>
    <LI>
    <DIV align=left><SPAN class=964063519-22122007><FONT face=Verdana 
    color=#000080 size=2>instructions in install.html describing how to load the 
    data</FONT></SPAN></DIV>
    <LI>
    <DIV align=left><SPAN class=964063519-22122007><FONT face=Verdana 
    color=#000080 size=2>tests in the junit regression suite which run if the 
    database is present</FONT></SPAN></DIV>
    <LI>
    <DIV align=left><SPAN class=964063519-22122007><FONT face=Verdana 
    color=#000080 size=2>aggregate tables, created by the loader program and 
    populated by a SQL script (compare 
    testsrc/main/mondrian/test/loader/insert.sql)</FONT></SPAN></DIV></LI></UL>
  <DIV dir=ltr align=left><SPAN class=964063519-22122007><FONT face=Verdana 
  color=#000080 size=2>I think these steps could be done quite 
  easily.</FONT></SPAN></DIV>
  <DIV dir=ltr align=left><SPAN class=964063519-22122007><FONT face=Verdana 
  color=#000080 size=2></FONT></SPAN>&nbsp;</DIV>
  <DIV dir=ltr align=left><SPAN class=964063519-22122007><FONT face=Verdana 
  color=#000080 size=2>There are a few differences:</FONT></SPAN></DIV>
  <UL dir=ltr>
    <LI>
    <DIV align=left><SPAN class=964063519-22122007><FONT face=Verdana 
    color=#000080 size=2>We don't require the TPC-H data set to be present in 
    order for the regression suite to run; if it is not present, tests will 
    recuse themselves (and trivially succeed)</FONT></SPAN></DIV>
    <LI>
    <DIV align=left><SPAN class=964063519-22122007><FONT face=Verdana 
    color=#000080 size=2>The TPC-H benchmark allows the database to be created 
    at different scales (e.g. one with 100MB, one with 1GB). The tests should 
    know which scale of data they are running against. Some tests might be able 
    to run on any scale of the data, other tests might only run on one 
    particular scale, and recuse themselves (trivially succeed) if the desired 
    data set is not present.</FONT></SPAN></DIV>
    <LI>
    <DIV align=left><SPAN class=964063519-22122007><FONT face=Verdana 
    color=#000080 size=2>Sherman proposes a variant to the TPC-H schema where 
    the line_items table is more like a fact table. I don't want to mess with 
    the 'official' table structure, so why not create an additional table 
    LINE_ITEM_FACT? The mondrian TPC-H schema could have cubes based on each 
    line item table, to compare.</FONT></SPAN></DIV></LI></UL>
  <DIV dir=ltr align=left><SPAN class=964063519-22122007><FONT face=Verdana 
  color=#000080 size=2>The trickiest thing will be passing in the connect string 
  to the test suite. A lot of the mondrian test suite assumes that there is just 
  one connection, the connection to foodmart. It is reasonable to assume that 
  tpch, if it exists, is in the same database as foodmart, but we could not 
  assume that it is in the same schema. The foodmart connect string is variously 
  read from mondrian.properties, or read from build.properties and passed in 
  when ant invokes junit, or pieced together from other 
  properties.</FONT></SPAN></DIV>
  <DIV dir=ltr align=left><SPAN class=964063519-22122007><FONT face=Verdana 
  color=#000080 size=2></FONT></SPAN>&nbsp;</DIV>
  <DIV dir=ltr align=left><SPAN class=964063519-22122007><FONT face=Verdana 
  color=#000080 size=2>Julian</FONT></SPAN></DIV><FONT face=Verdana 
  color=#000080 size=2></FONT><FONT face=Verdana color=#000080 
  size=2></FONT><FONT face=Verdana color=#000080 size=2></FONT><BR>
  <BLOCKQUOTE dir=ltr 
  style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000080 2px solid; \
MARGIN-RIGHT: 0px">  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
    <HR tabIndex=-1>
    <FONT face=Tahoma size=2><B>From:</B> mondrian-bounces@pentaho.org 
    [mailto:mondrian-bounces@pentaho.org] <B>On Behalf Of </B>Sherman 
    Wood<BR><B>Sent:</B> Friday, December 21, 2007 5:57 PM<BR><B>To:</B> 
    jhyde@pentaho.org; 'Agustin Campos'<BR><B>Cc:</B> 
    mondrian@pentaho.org<BR><B>Subject:</B> RE: [Mondrian] NON EMPTY + 
    exception<BR></FONT><BR></DIV>
    <DIV></DIV>
    <DIV class=Section1>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I’ll test it out 
    against HEAD and raise a bug if needed.<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">Yeah, we talked   about doing a scalability test using TPC-H a while ago, and \
now I am getting   some help with that from a partner who has a large environment – \
machines,   disk, database.<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I \
am just   developing the schema now. I had few issues with the snowflakey-ness, not 
    the least of which is that it is a transactional model not optimized in the 
    way that you would like for Mondrian. I had a few issues with Mondrian 
    dealing with snowflakes – it was not clear how to do joins of joins, getting 
    the aliases right etc.<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">With the schema   almost together, I am working on simulating the TPC-H test \
queries in MDX,   most of which are easy.<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I \
could contribute   this back, but how best to do it? It would make sense to have an \
example   TPC-H database in Mondrian in the same way as we have Foodmart today, and a \
  test suite against that.<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I \
am also looking   at using a few simple transforms of the TPC-H database that make it \
more   suitable for Mondrian – less snowflakey, making the linetiem table a real 
    fact table by adding keys on it and adding a few indexes. These additions 
    could also be included with a separate schema.<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">Sherman<o:p></o:p></SPAN></FONT></P>  <DIV>
    <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
    face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
    <HR tabIndex=-1 align=center width="100%" SIZE=2>
    </SPAN></FONT></DIV>
    <P class=MsoNormal><B><FONT face=Tahoma size=2><SPAN 
    style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: \
Tahoma">From:</SPAN></FONT></B><FONT   face=Tahoma size=2><SPAN style="FONT-SIZE: \
10pt; FONT-FAMILY: Tahoma">   Julian Hyde [mailto:jhyde@pentaho.org] <BR><B><SPAN 
    style="FONT-WEIGHT: bold">Sent:</SPAN></B> Friday, December 21, 2007 6:05 
    PM<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> '<st1:City 
    w:st="on"><st1:place w:st="on">Sherman</st1:place></st1:City> Wood'; 
    'Agustin Campos'<BR><B><SPAN style="FONT-WEIGHT: bold">Cc:</SPAN></B> 
    mondrian@pentaho.org<BR><B><SPAN 
    style="FONT-WEIGHT: bold">Subject:</SPAN></B> RE: [Mondrian] NON EMPTY + 
    exception</SPAN></FONT><o:p></o:p></P></DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Verdana color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Verdana">Sherman/Agustin,</SPAN></FONT><o:p></o:p></P>  <P class=MsoNormal><FONT \
face="Times New Roman" size=3><SPAN   style="FONT-SIZE: \
12pt">&nbsp;<o:p></o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Verdana \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Verdana">Can one of you   please log a bug for this? I know I just removed the \
getAlias() method that   <st1:City w:st="on"><st1:place \
w:st="on">Sherman</st1:place></st1:City>   referred to, but I don't think I fixed the \
bug. I'll need a testcase to make   sure.</SPAN></FONT><o:p></o:p></P>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><st1:City w:st="on"><st1:place w:st="on"><FONT 
    face=Verdana color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Verdana">Sherman</SPAN></FONT></st1:place></st1:City><FONT   face=Verdana color=navy \
size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Verdana">,</SPAN></FONT><o:p></o:p></P>  <P class=MsoNormal><FONT face="Times New \
Roman" size=3><SPAN   style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Verdana color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Verdana">I've been trying 
    to persuade someone to contribute a TPC-H test suite for a long time, and it 
    seems like you have one working. Can you contribute it? It would serve as a 
    good test of mondrian's scalability and (as this case shows) would improve 
    coverage on a very-snowflakey schema.</SPAN></FONT><o:p></o:p></P>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Verdana color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Verdana">Julian</SPAN></FONT><o:p></o:p></P>  <BLOCKQUOTE 
    style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; \
PADDING-LEFT: 4pt; PADDING-BOTTOM: 0in; MARGIN: 5pt 0in 5pt 3.75pt; BORDER-LEFT: navy \
1.5pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: medium none">  <P class=MsoNormal><FONT \
face="Times New Roman" size=3><SPAN   style="FONT-SIZE: \
12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <DIV class=MsoNormal style="TEXT-ALIGN: \
center" align=center><FONT   face="Times New Roman" size=3><SPAN style="FONT-SIZE: \
12pt">  <HR tabIndex=-1 align=center width="100%" SIZE=2>
      </SPAN></FONT></DIV>
      <P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><B><FONT face=Tahoma 
      size=2><SPAN 
      style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: \
                Tahoma">From:</SPAN></FONT></B><FONT 
      face=Tahoma size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> 
      Sherman Wood [mailto:swood@jaspersoft.com] <BR><B><SPAN 
      style="FONT-WEIGHT: bold">Sent:</SPAN></B> Thursday, December 20, 2007 
      6:47 PM<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> 
      jhyde@pentaho.org; '<st1:PersonName w:st="on">Mondrian developer mailing 
      list</st1:PersonName>'; 'Agustin Campos'<BR><B><SPAN 
      style="FONT-WEIGHT: bold">Subject:</SPAN></B> RE: [Mondrian] NON EMPTY + 
      exception</SPAN></FONT><o:p></o:p></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I have this issue 
      too.<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">From the TPC-H 
      data set, I have a dimension:<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   \
&lt;Dimension type="StandardDimension"   \
name="Customer"&gt;<o:p></o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
                
      &lt;Hierarchy name="Customer" hasAll="true" allMemberName="All Customers" 
      primaryKey="o_orderkey" 
      primaryKeyTable="orders"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;Join leftKey="o_custkey" rightAlias="customer" 
      rightKey="c_custkey"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;Table name="orders"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Table&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
                
      &lt;Join leftAlias="customer" leftKey="c_nationkey" rightAlias="c_nation" 
      rightKey="n_nationkey"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp \
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;Table name="customer"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp \
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Table&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp \
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
                
      &lt;Join leftAlias="c_nation" leftKey="n_regionkey" rightAlias="c_region" 
      rightKey="r_regionkey"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp \
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
                
      &lt;Table name="nation" alias="c_nation"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp \
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Table&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp \
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
                
      &lt;Table name="region" alias="c_region"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp \
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Table&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp \
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Join&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Join&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Join&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
                
      &lt;Level name="Region" table="c_region" column="r_name" type="String" 
      uniqueMembers="true" levelType="Regular" 
      hideMemberIf="Never"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Level&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
                
      &lt;Level name="Nation" table="c_nation" column="n_name" type="String" 
      uniqueMembers="true" levelType="Regular" 
      hideMemberIf="Never"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Level&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
                
      &lt;Level name="Customer" table="customer" column="c_name" type="String" 
      uniqueMembers="false" levelType="Regular" 
      hideMemberIf="Never"&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Level&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  &lt;/Hierarchy&gt;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   \
&lt;/Dimension&gt;<o:p></o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">With the   MDX:<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial">select   {[Measures].[Price]} on columns,<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">non empty 
      crossjoin([Commit Date].[1998].Children, [Customer].[All 
      Customers].[<st1:place w:st="on"><st1:country-region 
      w:st="on">AMERICA</st1:country-region></st1:place>].[UNITED 
      STATES].Children) ON rows<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">from 
      Orders<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
color=navy size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I 
      get:<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
                Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">Caused 
      by: </SPAN></FONT><U><FONT face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">mondrian.olap.MondrianException</SPAN></FONT></U><FONT   face="Courier New" \
color=black size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: \
                'Courier New'">: 
      Mondrian Error:Internal error: Populating member cache with members for 
      [[Commit Date].[Month], [Customer.Customer].[Customer]]</SPAN></FONT><FONT 
      face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      at mondrian.resource.MondrianResource$_Def0.ex(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">MondrianResource.java:755</SPAN></FONT></U><FONT   face="Courier New" \
                color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at \
mondrian.olap.Util.newInternal(</SPAN></FONT><U><FONT   face="Courier New" color=navy \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">Util.java:1103</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      at mondrian.olap.Util.newError(</SPAN></FONT><U><FONT face="Courier New" 
      color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">Util.java:1119</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      at mondrian.rolap.SqlTupleReader.prepareTuples(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">SqlTupleReader.java:415</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at \
mondrian.rolap.SqlTupleReader.readTuples(</SPAN></FONT><U><FONT   face="Courier New" \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">SqlTupleReader.java:441</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at 
      mondrian.rolap.RolapNativeSet$SetEvaluator.executeList(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapNativeSet.java:237</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at 
      mondrian.rolap.RolapNativeSet$SetEvaluator.executeIterable(</SPAN></FONT><U><FONT \
  face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapNativeSet.java:159</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at 
      mondrian.rolap.RolapNativeSet$SetEvaluator.execute(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapNativeSet.java:142</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at 
      mondrian.olap.fun.CrossJoinFunDef$BaseIterCalc.evaluateIterable(</SPAN></FONT><U><FONT \
  face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">CrossJoinFunDef.java:241</SPAN></FONT></U><FONT   face="Courier New" \
                color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      at mondrian.calc.impl.AbstractIterCalc.evaluate(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">AbstractIterCalc.java:53</SPAN></FONT></U><FONT   face="Courier New" \
                color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at \
mondrian.rolap.RolapResult.executeAxis(</SPAN></FONT><U><FONT   face="Courier New" \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapResult.java:715</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at \
mondrian.rolap.RolapResult.evalLoad(</SPAN></FONT><U><FONT   face="Courier New" \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapResult.java:587</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at \
mondrian.rolap.RolapResult.loadMembers(</SPAN></FONT><U><FONT   face="Courier New" \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapResult.java:565</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at \
mondrian.rolap.RolapResult.&lt;init&gt;(</SPAN></FONT><U><FONT   face="Courier New" \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapResult.java:251</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at \
mondrian.rolap.RolapConnection.execute(</SPAN></FONT><U><FONT   face="Courier New" \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapConnection.java:414</SPAN></FONT></U><FONT   face="Courier New" \
                color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      ... 27 more</SPAN></FONT><FONT face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">Caused 
      by: </SPAN></FONT><U><FONT face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">mondrian.olap.MondrianException</SPAN></FONT></U><FONT   face="Courier New" \
color=black size=2><SPAN   style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: \
                'Courier New'">: 
      Mondrian Error:Internal error: join does not have alias</SPAN></FONT><FONT 
      face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      at mondrian.resource.MondrianResource$_Def0.ex(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">MondrianResource.java:752</SPAN></FONT></U><FONT   face="Courier New" \
                color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at \
mondrian.olap.Util.newInternal(</SPAN></FONT><U><FONT   face="Courier New" color=navy \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">Util.java:1096</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at \
mondrian.olap.MondrianDef$Join.getAlias(</SPAN></FONT><U><FONT   face="Courier New" \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">MondrianDef.java:2176</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at 
      mondrian.rolap.RolapHierarchy.rewriteRelationWithAliases(</SPAN></FONT><U><FONT \
  face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapHierarchy.java:635</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      at mondrian.rolap.RolapHierarchy.relationSubset(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapHierarchy.java:554</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at 
      mondrian.rolap.RolapHierarchy.lookupRelationSubset(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapHierarchy.java:591</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      at mondrian.rolap.RolapHierarchy.relationSubset(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapHierarchy.java:548</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at \
mondrian.rolap.RolapHierarchy.addToFrom(</SPAN></FONT><U><FONT   face="Courier New" \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">RolapHierarchy.java:486</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      at mondrian.rolap.SqlTupleReader.addLevelMemberSql(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">SqlTupleReader.java:747</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at 
      mondrian.rolap.SqlTupleReader.generateSelectForLevels(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">SqlTupleReader.java:666</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   at 
      mondrian.rolap.SqlTupleReader.makeLevelMembersSql(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">SqlTupleReader.java:633</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      at mondrian.rolap.SqlTupleReader.prepareTuples(</SPAN></FONT><U><FONT 
      face="Courier New" color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 'Courier \
New'">SqlTupleReader.java:329</SPAN></FONT></U><FONT   face="Courier New" color=black \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
New'">)</SPAN></FONT><FONT   face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
                New'"><o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      ... 38 more</SPAN></FONT><FONT face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
New'"><o:p></o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial color=navy \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">This is happening 
      at the point where we are going from the lowest level join (nation, 
      region) up to the next join with customer.<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Verdana \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Verdana">mondrian.native.nonempty.enable=false   does not \
help.<o:p></o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Verdana color=navy \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Verdana"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">The structure in 
      Mondrian HEAD is different, so now it does not make a call to 
      </SPAN></FONT><FONT face="Courier New" color=black size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier \
                New'">MondrianDef$Join.getAlias. 
      The problem is there in Mondrian 2.3.2.</SPAN></FONT><FONT face=Arial 
      color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p></o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial color=navy \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">A fix I found was 
      to change Mondrian.xml in the &lt;Code&gt; for the Join 
      element:<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face="Courier \
                New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   public \
String getAlias() {<o:p></o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT \
                face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
  //throw Util.newInternal("join does not have 
      alias");<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return   getLeftAlias();<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   \
}<o:p></o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial color=navy \
                size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <P class=MsoNormal><FONT face=Arial \
                color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Change this line, 
      and recompile the Mondrian.jar.<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>  <DIV>
      <P class=MsoNormal><st1:place w:st="on"><st1:City w:st="on"><FONT 
      face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: \
12pt">Sherman</SPAN></FONT></st1:City></st1:place><o:p></o:p></P>  <DIV \
class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT   face="Times New \
Roman" size=3><SPAN style="FONT-SIZE: 12pt">  <HR tabIndex=-1 align=center \
width="100%" SIZE=2>  </SPAN></FONT></DIV>
      <P class=MsoNormal><B><FONT face=Tahoma size=2><SPAN 
      style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: \
                Tahoma">From:</SPAN></FONT></B><FONT 
      face=Tahoma size=2><SPAN style="FONT-SIZE: 10pt; 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> Wednesday, 
      December 12, 2007 7:10 PM<BR><B><SPAN 
      style="FONT-WEIGHT: bold">To:</SPAN></B> 'Agustin Campos'<BR><B><SPAN 
      style="FONT-WEIGHT: bold">Cc:</SPAN></B> '<st1:PersonName 
      w:st="on">Mondrian developer mailing list</st1:PersonName>'<BR><B><SPAN 
      style="FONT-WEIGHT: bold">Subject:</SPAN></B> RE: [Mondrian] NON EMPTY + 
      exception</SPAN></FONT><o:p></o:p></P></DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Verdana color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Verdana">An error stack 
      would help. I would like to see where MondrianDef.Join.getAlias() is being 
      called from.</SPAN></FONT><o:p></o:p></P>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Verdana color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Verdana">I am guessing 
      you have a snowflake schema?</SPAN></FONT><o:p></o:p></P>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Verdana color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Verdana">Also, you 
      should be able to work around this problem by setting 
      mondrian.native.nonempty.enable=false in 
      mondrian.properties.</SPAN></FONT><o:p></o:p></P>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Verdana color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: \
Verdana">Julian</SPAN></FONT><o:p></o:p></P>  <BLOCKQUOTE 
      style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; \
PADDING-LEFT: 4pt; PADDING-BOTTOM: 0in; MARGIN: 5pt 0in 5pt 3.75pt; BORDER-LEFT: navy \
1.5pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: medium none">  <P class=MsoNormal><FONT \
face="Times New Roman" size=3><SPAN   style="FONT-SIZE: \
                12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P>
        <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
        face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
        <HR tabIndex=-1 align=center width="100%" SIZE=2>
        </SPAN></FONT></DIV>
        <P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><B><FONT face=Tahoma 
        size=2><SPAN 
        style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: \
                Tahoma">From:</SPAN></FONT></B><FONT 
        face=Tahoma size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> 
        Agustin Campos [mailto:aguscampos@gmail.com] <BR><B><SPAN 
        style="FONT-WEIGHT: bold">Sent:</SPAN></B> Wednesday, December 12, 2007 
        12:04 AM<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> 
        jhyde@pentaho.org; <st1:PersonName w:st="on">Mondrian developer mailing 
        list</st1:PersonName><BR><B><SPAN 
        style="FONT-WEIGHT: bold">Subject:</SPAN></B> Re: [Mondrian] NON EMPTY + 
        exception</SPAN></FONT><o:p></o:p></P>
        <P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><FONT 
        face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">all &lt;join 
        ...&gt; has their own alias (tables' names on database) <BR>&lt;join 
        leftAlias... rightAlias... &gt;<BR>&nbsp;&nbsp; &lt; table name="table1" 
        /&gt;<BR>&nbsp; &lt;join ...&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        ...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ....<BR>&nbsp;&nbsp; &lt;/join&gt; 
        <BR>&lt;/join&gt;<BR><BR>All &lt;join &gt; has their own alias (left and 
        right). <BR>&lt;Table ....&gt; doesn't.<BR><BR>Thanks for your answer, 
        but, do you have any more ideas?<BR><BR><o:p></o:p></SPAN></FONT></P>
        <DIV>
        <P class=MsoNormal><SPAN class=gmailquote><FONT face="Times New Roman" 
        size=3><SPAN style="FONT-SIZE: 12pt">2007/12/12, Julian Hyde &lt;<A 
        href="mailto:jhyde@pentaho.org">jhyde@pentaho.org</A>&gt;:</SPAN></FONT></SPAN> \
  <o:p></o:p></P>
        <DIV>
        <P class=MsoNormal><FONT face=Verdana color=navy size=2><SPAN 
        style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Verdana">Heed the 
        error message "</SPAN></FONT><FONT color=black><SPAN 
        style="COLOR: black">join does not have alias</SPAN></FONT><FONT 
        face=Verdana color=navy size=2><SPAN 
        style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Verdana">" - check all 
        &lt;Join&gt; elements in your schema and make sure that specify 
        leftAlias and rightAlias, to make the join 
        unambiguous.</SPAN></FONT><o:p></o:p></P>
        <BLOCKQUOTE 
        style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium \
none; PADDING-LEFT: 4pt; PADDING-BOTTOM: 0in; MARGIN: 5pt 0in 5pt 3.75pt; \
BORDER-LEFT: navy 1.5pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: medium none">  <P \
class=MsoNormal><FONT face="Times New Roman" size=3><SPAN   style="FONT-SIZE: \
                12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P>
          <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
          face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
          <HR align=center width="100%" SIZE=2>
          </SPAN></FONT></DIV>
          <P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><B><FONT face=Tahoma 
          size=2><SPAN 
          style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: \
                Tahoma">From:</SPAN></FONT></B><FONT 
          face=Tahoma size=2><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>Agustin 
          Campos<BR><B><SPAN style="FONT-WEIGHT: bold">Sent:</SPAN></B> Tuesday, 
          December 11, 2007 11:15 PM<BR><B><SPAN 
          style="FONT-WEIGHT: bold">To:</SPAN></B> <st1:PersonName 
          w:st="on">Mondrian developer mailing list</st1:PersonName><BR><B><SPAN 
          style="FONT-WEIGHT: bold">Subject:</SPAN></B> [Mondrian] NON EMPTY + 
          exception</SPAN></FONT><o:p></o:p></P>
          <DIV><SPAN id=q_116cd594056eb77a_1>
          <P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><SPAN class=e><FONT 
          face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">Hello 
          all:</SPAN></FONT></SPAN><BR><BR><SPAN class=e>I am having a little 
          problem with my cube. It has 3 dimensions.</SPAN><BR><BR><SPAN 
          class=e>The case is that, when I ask something like 
          this:</SPAN><BR><BR><SPAN class=e>select NON EMPTY 
          Crossjoin(Hierarchize(<st1:place 
          w:st="on">Union</st1:place>({[Dim1].[All]}, [Dim1].[All].Children)), 
          {[Dim2].[All]}) ON COLUMNS, </SPAN><BR><SPAN class=e>&nbsp; NON EMPTY 
          {[Dim3].[All]} ON ROWS</SPAN><BR><SPAN class=e>from 
          [MyCube]</SPAN><BR><BR><SPAN class=e>and then, I expand Dim1 I get an 
          exception like this:</SPAN><BR><BR><SPAN 
          class=e>SqlMemberSource.getMemberChildren: executing sql [<I><SPAN 
          style="FONT-STYLE: italic"> SQL query</SPAN></I> ], exec 46 ms, 
          exec+fetch 46 ms, 7 rows</SPAN><BR><SPAN 
          class=e>com.tonbeller.jpivot.olap.model.OlapException: 
          mondrian.olap.MondrianException: Mondrian Error:Internal error: Error 
          while executing query: <I><SPAN style="FONT-STYLE: italic">MDX query 
          which should work </SPAN></I></SPAN><BR clear=all><BR><SPAN 
          class=e>...</SPAN><BR><SPAN class=e>...</SPAN><BR><SPAN 
          class=e>...</SPAN><BR><SPAN class=e>...</SPAN><BR><BR><SPAN 
          class=e>Caused by: mondrian.olap.MondrianException: Mondrian 
          Error:Internal error: join does not have alias</SPAN><BR><SPAN 
          class=e>...</SPAN><BR><SPAN class=e>...</SPAN><BR><SPAN 
          class=e>...</SPAN><BR><BR><SPAN class=e>Do you have any idea about 
          what could cause this problem? I know that I have not sent the 
          complete log but, I hope this could help to troubleshoot the problem. 
          </SPAN><BR><BR><SPAN class=e>I remind: It ONLY happends when I ask for 
          non empty cells. It DOES WORK when they are 
          allowd.</SPAN><BR><BR><BR><SPAN class=e>Thank you a 
          lot:</SPAN><BR><BR><SPAN 
        class=e>Agustín</SPAN><o:p></o:p></P></DIV></BLOCKQUOTE></DIV>
        <P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><FONT 
        face="Times New Roman" size=3><SPAN 
        style="FONT-SIZE: \
12pt"></SPAN><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><o:p></o:p></SPAN></FONT></P></DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
        style="FONT-SIZE: 12pt"><BR><BR clear=all><BR>-- <BR>Agustín Campos 
        Muñoz<BR><A 
        href="http://www.acampos.net">http://www.acampos.net</A><BR><BR>Email: 
        aguscamposENgmailPUNTOcom 
        <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        acamposENiiesPUNTOes<BR>MSN Messenger: 
        acampozENhotmailPUNTOcom<BR>Skype: acamposnet 
        <o:p></o:p></SPAN></FONT></P></BLOCKQUOTE></BLOCKQUOTE></DIV></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>




_______________________________________________
Mondrian mailing list
Mondrian@pentaho.org
http://lists.pentaho.org/mailman/listinfo/mondrian


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic