Bug 193296 Subquery does not return value for chart
I've tried 2.1.x and 2.2RC but I get always an error. org.eclipse.birt.report.engine.data.dte.DataGenerationEngine doExecuteQuery SEVERE: Data engine operation failed due to an unexpected exception. Error evaluating Javascript expression. Script engine error: TypeError: Cannot read property "ISO_LAND" from null Script source: source, line: 0, text: row._outer["ISO_LAND"] + Result iterator has no current row. It either has not started or has ended. I would like to build a report based on a query that returns a list of countries eg.: report_query=select country_id from ... where sales>100 for each country I'd like to have a line chart with sales vs. budget eg.: sub_query= select month,bud,sales from ... where country = ? If I drag the subquery into the "main" table, connect parameter to row[]. no problem. I get bud vs. sales values for each country. If I place a chart based on sub_query in the "main" table. I get the error shown above. In this case I have to connect the parameter to row._outer[] and for some reason I don't see any values in the chart preview?!?
chart/org.eclipse.birt.chart.reportitem.ui/src/org/eclipse/birt/chart/reportitem/ui/ReportDataServiceProvider.java
ArrayList dataList = new ArrayList( );
		
		
		ClassLoader oldContextLoader = Thread.currentThread( )
				.getContextClassLoader( );
		ClassLoader parentLoader = oldContextLoader;
		if ( parentLoader == null )
			parentLoader = this.getClass( ).getClassLoader( );
		ClassLoader newContextLoader = getCustomScriptClassLoader( parentLoader );
		Thread.currentThread( ).setContextClassLoader( newContextLoader );
		try
		{
			QueryDefinition queryDefn = new QueryDefinition( );
		    int maxRow = getMaxRow( );
			queryDefn.setMaxRows( maxRow );
			queryDefn.setDataSetName( getDataSetFromHandle( ).getQualifiedName( ) );
			
			DataSessionContext dsc = new DataSessionContext( DataSessionContext.MODE_DIRECT_PRESENTATION,
					getReportDesignHandle( ) );
			dsc.setCacheOption( DataSessionContext.CACHE_USE_ALWAYS, maxRow );
			
			DataRequestSession session = DataRequestSession.newSession( dsc );
			for ( int i = 0; i < columnExpression.length; i++ )
			{
				queryDefn.addResultSetExpression( columnExpression[i],
						new ScriptExpression( columnExpression[i] ) );
			}
			IQueryResults actualResultSet = session.executeQuery( queryDefn,
					itemHandle.getPropertyHandle( ReportItemHandle.PARAM_BINDINGS_PROP )
							.iterator( ),