Pentaho Report Designer + Olap4j +SSAS gives IndexOutOfBoundsException

Alan Leavy
2013-05-01
2013-05-09
  • Alan Leavy
    Alan Leavy
    2013-05-01

    Following on from https://sourceforge.net/p/olap4j/discussion/577988/thread/6a690a3c/
    I built a new version of pentaho-reporting-engine-datasource-editor-olap4j-3.9.0-GA.jar, including the fixes for
    http://jira.pentaho.com/browse/PRD-3697
    and
    http://jira.pentaho.com/browse/PRD-3825

    When Creating an olap4j data source in PRD, I can preview my query successfully, but when I try to save it I now get a different error:

    java.lang.IndexOutOfBoundsException: Coordinate 4 of axis 1 is out of range (1, 17)
        at org.olap4j.driver.xmla.XmlaOlap4jCellSet.coordinatesToOrdinal(XmlaOlap4jCellSet.java:695)
        at org.olap4j.driver.xmla.XmlaOlap4jCellSet.getCell(XmlaOlap4jCellSet.java:582)
        at org.pentaho.reporting.engine.classic.extensions.datasources.olap4j.BandedMDXTableModel.getCellDataAttributes(BandedMDXTableModel.java:483)
        at org.pentaho.reporting.engine.classic.core.cache.CachableTableModel.<init>(CachableTableModel.java:65)
        at org.pentaho.reporting.engine.classic.core.cache.EhCacheDataCache.put(EhCacheDataCache.java:103)
        at org.pentaho.reporting.engine.classic.core.cache.CachingDataFactory.queryData(CachingDataFactory.java:331)
        at org.pentaho.reporting.engine.classic.core.designtime.DesignTimeDataSchemaModel.queryReportData(DesignTimeDataSchemaModel.java:389)
        at org.pentaho.reporting.engine.classic.core.designtime.DesignTimeDataSchemaModel.buildDataSchema(DesignTimeDataSchemaModel.java:319)
        at org.pentaho.reporting.engine.classic.core.designtime.DesignTimeDataSchemaModel.ensureDataSchemaValid(DesignTimeDataSchemaModel.java:245)
        at org.pentaho.reporting.engine.classic.core.designtime.DesignTimeDataSchemaModel.getColumnNames(DesignTimeDataSchemaModel.java:453)
        at org.pentaho.reporting.designer.core.editor.fieldselector.FieldSelectorPanel.computeColumns(FieldSelectorPanel.java:133)
        at org.pentaho.reporting.designer.core.editor.fieldselector.FieldSelectorPanel$ReportModelChangeHandler.nodeChanged(FieldSelectorPanel.java:68)
        at org.pentaho.reporting.engine.classic.core.AbstractReportDefinition.fireModelLayoutChanged(AbstractReportDefinition.java:1398)
        at org.pentaho.reporting.engine.classic.core.MasterReport.updateChangedFlagInternal(MasterReport.java:475)
        at org.pentaho.reporting.engine.classic.core.Element.notifyNodeChildRemoved(Element.java:1135)
        at org.pentaho.reporting.designer.core.actions.report.EditQueryAction.performEdit(EditQueryAction.java:175)
        at org.pentaho.reporting.designer.core.editor.structuretree.StructureTreePanel$ReportTreeContextMenuHandler.mouseClicked(StructureTreePanel.java:154)
        at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
        at java.awt.Component.processMouseEvent(Component.java:6300)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
        at java.awt.Component.processEvent(Component.java:6062)
        at java.awt.Container.processEvent(Container.java:2039)
        at java.awt.Component.dispatchEventImpl(Component.java:4660)
        at java.awt.Container.dispatchEventImpl(Container.java:2097)
        at java.awt.Component.dispatchEvent(Component.java:4488)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4245)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
        at java.awt.Container.dispatchEventImpl(Container.java:2083)
        at java.awt.Window.dispatchEventImpl(Window.java:2489)
        at java.awt.Component.dispatchEvent(Component.java:4488)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:674)
        at java.awt.EventQueue.access$400(EventQueue.java:81)
        at java.awt.EventQueue$2.run(EventQueue.java:633)
        at java.awt.EventQueue$2.run(EventQueue.java:631)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
        at java.awt.EventQueue$3.run(EventQueue.java:647)
        at java.awt.EventQueue$3.run(EventQueue.java:645)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:644)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    

    I'm using
    PRD 3.9.0 GA. 15557 + olap4j 1.2.0
    SSAS 2012

     
    • Julian Hyde
      Julian Hyde
      2013-05-01

      On May 1, 2013, at 5:10 AM, "Alan Leavy" alanleavy@users.sf.net wrote:

      I built a new version of pentaho-reporting-engine-datasource-editor-olap4j-3.9.0-GA.jar, including the fixes for
      http://jira.pentaho.com/browse/PRD-3697
      and
      http://jira.pentaho.com/browse/PRD-3825 [and] I now get a different error:

      java.lang.IndexOutOfBoundsException: Coordinate 4 of axis 1 is out of range (1, 17)
      The simplest explanation for this is that PRD is generating an out-of-bounds cell reference. The cell set has 1 column and 17 rows, but the request is asking for column 4. Coordinates are 0-based, so the only valid column value is 0.

      The error message should say "axis 0"; this is a minor bug on olap4j's part. I will fix it.

      Julian

       
      • Alan Leavy
        Alan Leavy
        2013-05-09

        Hi Julian,

        FYI, the problem was with getCellDataAttributes() in engine/classic/extensions/datasources/olap4j/BandedMDXTableModel.java.
        It was incorrectly mapping coordinates for cells in the banded table model to the underlying MDX resultset.

        The latest PRD code on github has a fix for this. The fix is about 2 years old but wasn't included in the 3.9 Branch in the original SVN repository.

         
  • Julian Hyde
    Julian Hyde
    2013-05-09

    Good to know. Thanks.