[Mondrian] Bug in Large Dimension Handling First Cut

Julian Hyde jhyde at pentaho.com
Tue May 13 00:42:30 EDT 2008


Timothy,
 
Thanks. I have checked in your change as 11055.
 
You didn't provide an explicit test case, but it was easy enough to
reproduce. For the record, I noticed that this bug reproduced on
FunctionTest.testAggregate2() if I made the Store dimension
high-cardinality.
 
Jorge & Luis,
 
As part of that change, I added a property mondrian.test.highCardDimensions
to make testing easier. If you set this property to, say
mondrian.test.highCardDimensions=Gender,Store,Customers and run the test
suite it will preprocess the FoodMart.xml to make those dimensions high
cardinality. This turns up lots of errors.
 
We need the test suite to pass regardless of which dimensions are
high-cardinality. I don't think there are any dimensions for which it
currently passes. If there are, let me know and I will add the property
setting to my nightly regress.
 
Julian


  _____  

From: mondrian-bounces at pentaho.org [mailto:mondrian-bounces at pentaho.org] On
Behalf Of timothy.lambert at thomsonreuters.com
Sent: Monday, May 12, 2008 5:29 PM
To: mondrian at pentaho.org
Subject: [Mondrian] Bug in Large Dimension Handling First Cut



Turning on the "highCardinality" switch for the Product dimension in
FoodMart causes a cast exception.

 

The problem was that HighCardSqlTupleReader.readTuples was returning a list
of Member[] not a list of RolapMember[].

 

Fix attached.

 

Example exception stack.

 

Caused by: java.lang.ClassCastException: [Lmondrian.olap.Member; cannot be
cast to [Lmondrian.rolap.RolapMember;

      at mondrian.rolap.SqlMemberSource$1$1.next(SqlMemberSource.java:485)

      at mondrian.rolap.SqlMemberSource$1$1.next(SqlMemberSource.java:1)

      at
mondrian.rolap.RolapCubeHierarchy$CacheRolapCubeHierarchyMemberReader.getMem
bersInLevel(RolapCubeHierarchy.java:627)

      at
mondrian.rolap.RolapSchemaReader.getLevelMembers(RolapSchemaReader.java:447)

      at
mondrian.rolap.RolapSchemaReader.getLevelMembers(RolapSchemaReader.java:430)

      at
mondrian.rolap.RolapCube$RolapCubeSchemaReader.getLevelMembers(RolapCube.jav
a:2425)

      at
mondrian.olap.DelegatingSchemaReader.getLevelMembers(DelegatingSchemaReader.
java:139)

      at
mondrian.olap.Query$QuerySchemaReader.getLevelMembers(Query.java:1472)

      at
mondrian.olap.fun.FunUtil.getNonEmptyLevelMembers(FunUtil.java:1803)

      at mondrian.olap.fun.FunUtil.levelMembers(FunUtil.java:1812)

      at
mondrian.olap.fun.BuiltinFunTable$34$1.evaluateMemberList(BuiltinFunTable.ja
va:1064)

      at
mondrian.olap.fun.SetFunDef$ListSetCalc$1.evaluateVoid(SetFunDef.java:132)

      at
mondrian.olap.fun.SetFunDef$ListSetCalc.evaluateList(SetFunDef.java:209)

      at
mondrian.calc.impl.AbstractListCalc.evaluate(AbstractListCalc.java:67)

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

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

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

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

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20080512/a125ffd7/attachment.html 


More information about the Mondrian mailing list