dsQuery.setExprProcessor( new ExpressionProcessor( null, null, dataSet, null ) );
JointDataSetQuery jointQuery = (JointDataSetQuery) odiQuery; dsQuery.setExprProcessor( jointQuery.getExprProcessor( ) ); List fetchEvents = jointQuery.getFetchEvents( ); if ( fetchEvents != null ) for ( int i = 0; i < fetchEvents.size( ); i++ ) dsQuery.addOnFetchEvent( (IResultObjectEvent) fetchEvents.get( i ) ); dsQuery.setMaxRows( jointQuery.getMaxRows( ) ); dsQuery.setOrdering( toList( jointQuery.getOrdering( ) ) ); dsQuery.setGrouping( toList( jointQuery.getGrouping( ) ) );
		protected org.eclipse.birt.data.engine.odi.IResultIterator executeOdiQuery(				IEventHandler eventHandler ) throws DataException		{			if ( doesLoadFromCache( ) == true )			{				DataSourceQuery dsQuery = new DataSourceQuery( );				dsQuery.setExprProcessor( new ExpressionProcessor( null,						null,						dataSet,						null ) );				return dsQuery.execute( eventHandler );			}						JointResultMetadata jrm = getJointResultMetadata( left, right );			resultClass = jrm.getResultClass( );			populator = JointDataSetPopulatorFactory.getBinaryTreeDataSetPopulator( left.getOdiResult( ),					right.getOdiResult( ),					jrm,					matcher,					joinType );						if ( doesSaveToCache( ) == false )				return new CachedResultSet( (BaseQuery) this.odiQuery,						resultClass,						populator,						eventHandler );			else				return new CachedResultSet( (BaseQuery) this.odiQuery,						resultClass,						new DataSetResultCache( populator, resultClass ),						eventHandler );		}