Bug 192132 [enhancement] reduce numbers of queries being executed for olap and xtab report
steps to reproduce: - use the attached report - preview in web viewer by profiling execution at web server and database server, it was noticed that when defining a data cube, each dimension executed new query requiring data from database, even though there was only one based table used by the data cube. could we enhance it by doing it once, then slice dimension data from query result?
data/org.eclipse.birt.report.data.adapter/src/org/eclipse/birt/report/data/adapter/impl/DataRequestSessionImpl.java
Map candidateAppContext = new HashMap();
		candidateAppContext.putAll( appContext );
		if ( doPerfTuning )
		{
			candidateAppContext.put( DataEngine.DATA_SET_CACHE_ROW_LIMIT, new Integer(-1) );
		}
					
		List measureNames = new ArrayList( );
		List measureGroups = cubeHandle.getContents( CubeHandle.MEASURE_GROUPS_PROP );
		for ( int i = 0; i < measureGroups.size( ); i++ )
		{
			MeasureGroupHandle mgh = (MeasureGroupHandle) measureGroups.get( i );
			List measures = mgh.getContents( MeasureGroupHandle.MEASURES_PROP );
			for ( int j = 0; j < measures.size( ); j++ )
			{
				MeasureHandle measure = (MeasureHandle) measures.get( j );
				measureNames.add( measure.getName( ) );
			}
		}
		IDimension[] dimensions = populateDimensions( cubeMaterializer,
				cubeHandle,
				candidateAppContext );
		String[][] factTableKey = new String[dimensions.length][];
		String[][] dimensionKey = new String[dimensions.length][];
		for ( int i = 0; i < dimensions.length; i++ )
		{
			TabularDimensionHandle dim = (TabularDimensionHandle) cubeHandle.getDimension( dimensions[i].getName( ) );
			TabularHierarchyHandle hier = (TabularHierarchyHandle) dim.getDefaultHierarchy( );
			if ( cubeHandle.getDataSet( ).equals( hier.getDataSet( ) ) )
			{