Uploaded image for project: 'Pentaho Analysis - Mondrian'
  1. Pentaho Analysis - Mondrian
  2. MONDRIAN-1116

Closure tables - Cube with more than 128 "elements" breaks when trying to get a connection



    • Type: Bug
    • Status: Closed
    • Severity: Unknown
    • Resolution: Duplicate
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
    • Notice:
      When an issue is open, the "Fix Version/s" field conveys a target, not necessarily a commitment. When an issue is closed, the "Fix Version/s" field conveys the version that the issue was fixed in.


      We have several large cubes with ~40 dimensions and ~60 levels

      Several of these dimensions are parent child dimensions and I am trying to make use of the closure tables.

      I can add the closure tables however at some point after adding a few of them, I get the following error below. I can remove a different <Closure> tag and add in the new one, or remove an arbitrary <Level> from some dimension and there are no problems (since I assume it reduces the count back down to <= 128). The number of <Level> + <Closure> tags is less than 128 so I'm not sure what else contributes to the total count.

      This will be problematic as we will have several more dimensions to add in the coming months and we will not be able to use closure tables (which will make some of our large parent child dimensions unusable)

      The error stems from mondrian.rolap.RolapCubeLevel on line 114 which looks like it is a closure table specific piece of code.


      Caused by: java.lang.IllegalArgumentException: pos 129 exceeds capacity 128
      at mondrian.rolap.BitKey$Mid128.set(BitKey.java:823)
      at mondrian.rolap.RolapCubeLevel.init(RolapCubeLevel.java:114)
      at mondrian.rolap.RolapHierarchy.init(RolapHierarchy.java:371)
      at mondrian.rolap.RolapCubeHierarchy.init(RolapCubeHierarchy.java:420)
      at mondrian.rolap.RolapDimension.init(RolapDimension.java:186)
      at mondrian.rolap.RolapCube.init(RolapCube.java:1321)
      at mondrian.rolap.RolapCube.<init>(RolapCube.java:299)
      at mondrian.rolap.RolapSchema.load(RolapSchema.java:546)
      at mondrian.rolap.RolapSchema.load(RolapSchema.java:421)
      at mondrian.rolap.RolapSchema.<init>(RolapSchema.java:219)
      at mondrian.rolap.RolapSchema.<init>(RolapSchema.java:52)
      at mondrian.rolap.RolapSchema$Pool.get(RolapSchema.java:1079)
      at mondrian.rolap.RolapSchema$Pool.get(RolapSchema.java:885)
      at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:160)
      at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:90)
      at mondrian.olap.DriverManager.getConnection(DriverManager.java:112)
      at mondrian.olap.DriverManager.getConnection(DriverManager.java:68)
      at mondrian.olap4j.MondrianOlap4jConnection.<init>(MondrianOlap4jConnection.java:135)
      at mondrian.olap4j.FactoryJdbc4Plus$AbstractConnection.<init>(FactoryJdbc4Plus.java:323)
      at mondrian.olap4j.FactoryJdbc4Impl$MondrianOlap4jConnectionJdbc4.<init>(FactoryJdbc4Impl.java:104)
      at mondrian.olap4j.FactoryJdbc4Impl.newConnection(FactoryJdbc4Impl.java:32)
      at mondrian.olap4j.MondrianOlap4jDriver.connect(MondrianOlap4jDriver.java:134)
      at java.sql.DriverManager.getConnection(DriverManager.java:579)
      at java.sql.DriverManager.getConnection(DriverManager.java:243)




            jhyde Julian Hyde (Inactive)
            ddosch Dan Dosch
            0 Vote for this issue
            0 Start watching this issue