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

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Severity: Unknown
    • Resolution: Duplicate
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • 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.

      Description

      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.

      getCube().closureColumnBitKey.set(closedPeerCubeLevel.starKeyColumn.getBitPosition());

      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)

        Attachments

          Activity

            People

            Assignee:
            jhyde Julian Hyde (Inactive)
            Reporter:
            ddosch Dan Dosch
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: