[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> </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 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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"> <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"> <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"> <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"> <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> </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> </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> </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"> \
<Dimension type="StandardDimension" \
name="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"> \
<Hierarchy name="Customer" hasAll="true" allMemberName="All Customers"
primaryKey="o_orderkey"
primaryKeyTable="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"> & \
nbsp; \
<Join leftKey="o_custkey" rightAlias="customer"
rightKey="c_custkey"><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; &nb \
sp; \
<Table name="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"> & \
nbsp; &nb \
sp; \
</Table><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; &nb \
sp; \
<Join leftAlias="customer" leftKey="c_nationkey" rightAlias="c_nation"
rightKey="n_nationkey"><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; &nb \
sp;   \
; \
<Table name="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"> & \
nbsp; &nb \
sp;   \
; \
</Table><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; &nb \
sp;   \
; \
<Join leftAlias="c_nation" leftKey="n_regionkey" rightAlias="c_region"
rightKey="r_regionkey"><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; &nb \
sp;   \
; & \
nbsp; \
<Table name="nation" alias="c_nation"><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; &nb \
sp;   \
; & \
nbsp; \
</Table><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; &nb \
sp;   \
; & \
nbsp; \
<Table name="region" alias="c_region"><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; &nb \
sp;   \
; & \
nbsp; \
</Table><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; &nb \
sp;   \
; \
</Join><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; &nb \
sp; \
</Join><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; \
</Join><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; \
<Level name="Region" table="c_region" column="r_name" type="String"
uniqueMembers="true" levelType="Regular"
hideMemberIf="Never"><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; \
</Level><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; \
<Level name="Nation" table="c_nation" column="n_name" type="String"
uniqueMembers="true" levelType="Regular"
hideMemberIf="Never"><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; \
</Level><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; \
<Level name="Customer" table="customer" column="c_name" type="String"
uniqueMembers="false" levelType="Regular"
hideMemberIf="Never"><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; \
</Level><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"> \
</Hierarchy><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"> \
</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> </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> </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> </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> </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'">
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'"> 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'">
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'">
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'"> 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'"> 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'"> 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'"> 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'"> 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'">
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'"> 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'"> 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'"> 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'"> at \
mondrian.rolap.RolapResult.<init>(</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'"> 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'">
... 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'">
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'"> 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'"> 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'"> 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'">
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'"> 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'">
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'"> 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'">
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'"> 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'"> 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'">
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'">
... 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> </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> </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> </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> </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> </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 <Code> 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> </o:p></SPAN></FONT></P> <P class=MsoNormal><FONT face="Courier \
New" size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier \
New'"> 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'"> \
//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'"> \
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'"> \
}<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> </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> </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> </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"> <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"> <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"> <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> </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 <join
...> has their own alias (tables' names on database) <BR><join
leftAlias... rightAlias... ><BR> < table name="table1"
/><BR> <join ...><BR>
...<BR> ....<BR> </join>
<BR></join><BR><BR>All <join > has their own alias (left and
right). <BR><Table ....> 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 <<A
href="mailto:jhyde@pentaho.org">jhyde@pentaho.org</A>>:</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
<Join> 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> </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> 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>
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