Bug 189812 Exceptions occurs when specify two sorting conditions on a crosstab[1102]
Description: Exceptions occurs when specify two sorting conditions on a crosstab[1102] Build number: 2.2.0.v20070530-0630 Steps to reproduce: 1, Open the attached report design 2, Specify the sorting on the crosstab 3, One sorting is : Group Level: Product/PRODUCTLINE Key: CREDITLIMIT_Date/year_Product/PRODUCTLINE Column member valud: year 2003 4, The second sorting is as same as sorting one, but the year value is 2004 Expected result: Support multi sorting on one condition Actual result: Exception occurs Error Logs: org.eclipse.birt.report.service.api.ReportServiceException: Error happened while running the report; nested exception is: java.lang.ArrayIndexOutOfBoundsException: 1 Show Exception Stack Trace Hide Exception Stack Trace Stack Trace: org.eclipse.birt.data.engine.olap.data.impl.aggregation.sort.AggregationSortHelper.createMatchedAggrRow(AggregationSortHelper.java:131) org.eclipse.birt.data.engine.olap.data.impl.aggregation.sort.AggregationSortHelper.populateAggrDiskArray(AggregationSortHelper.java:87) org.eclipse.birt.data.engine.olap.data.impl.aggregation.sort.AggregationSortHelper.sort(AggregationSortHelper.java:53) org.eclipse.birt.data.engine.olap.data.impl.aggregation.sort.AggrSortHelper.sort(AggrSortHelper.java:114) org.eclipse.birt.data.engine.olap.data.api.CubeQueryExecutorHelper.applyAggrSort(CubeQueryExecutorHelper.java:448) org.eclipse.birt.data.engine.olap.data.api.CubeQueryExecutorHelper.execute(CubeQueryExecutorHelper.java:301) org.eclipse.birt.data.engine.olap.query.view.QueryExecutor.populateRs(QueryExecutor.java:129) org.eclipse.birt.data.engine.olap.query.view.QueryExecutor.execute
data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/CubeFeaturesTest.java
cqd.setQueryResultsID( queryResults.getID( ) );
		pcq = engine.prepare( cqd, null );
		queryResults = pcq.execute( null );
		cursor = queryResults.getCubeCursor( );
		
		this.printCube( cursor, columnEdgeBindingNames, "edge2level1", "measure1" );
	
	}
	/**
	 * Simple sort on 1 level
	 * @throws Exception
	 */
	public void testSort1Cache( ) throws Exception
	{
		ICubeQueryDefinition cqd = new CubeQueryDefinition( cubeName);
		IEdgeDefinition columnEdge = cqd.createEdge( ICubeQueryDefinition.COLUMN_EDGE );
		IEdgeDefinition rowEdge = cqd.createEdge( ICubeQueryDefinition.ROW_EDGE );
		IDimensionDefinition dim1 = columnEdge.createDimension( "dimension1" );
		IHierarchyDefinition hier1 = dim1.createHierarchy( "dimension1" );
		ILevelDefinition level11 = hier1.createLevel( "level11" );
		ILevelDefinition level12 = hier1.createLevel( "level12" );
				
		IDimensionDefinition dim2 = rowEdge.createDimension( "dimension2" );
		IHierarchyDefinition hier2 = dim2.createHierarchy( "dimension2" );
		ILevelDefinition level21 = hier2.createLevel( "level21" );
		
		cqd.createMeasure( "measure1" );
		
		IBinding binding1 = new Binding( "edge1level1");