Bug 200144 Exception occurs when nested table share the parent table's result set.[0005]
Description: Exception occurs when nested table share the parent table's result set.[0005] Build number: 2.2.1.v20070816-0630 Steps to reproduce: 1, New a table1 with one binding 2, Insert another table into table1 and share the table1's resultset 3, Preview Actual result: Exception occurs when preview Error log: org.eclipse.birt.report.service.api.ReportServiceException: Error happened while running the report; nested exception is: java.lang.IllegalStateException: forward reference dataset org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder$QueryBuilderVisitor.createQuery(ReportQueryBuilder.java:912) org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder$QueryBuilderVisitor.visitTableItem(ReportQueryBuilder.java:609) org.eclipse.birt.report.engine.ir.TableItemDesign.accept(TableItemDesign.java:44) org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder.build(ReportQueryBuilder.java:246) org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder$QueryBuilderVisitor.visitCell(ReportQueryBuilder.java:806) org.eclipse.birt.report.engine.ir.CellDesign.accept(CellDesign.java:156) org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder.build(ReportQueryBuilder.java:246) org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder$QueryBuilderVisitor.visitRow(ReportQueryBuilder.java:792) org.eclipse.birt.report.engine.ir.RowDesign.accept(RowDesign.java:100) org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder.build(ReportQueryBuilder.java:246) org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder$QueryBuilderVisitor.handleListingBand(ReportQueryBuilder.java:705) org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder$QueryBuilderVisitor.visitTableItem(ReportQueryBuilder.java:641) org.eclipse.birt.report.engine.ir.TableItemDesign.accept(TableItemDesign.java:44) org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder.build(ReportQueryBuilder.java:246) org.eclipse.birt.report.engine.data.dte.ReportQueryBuilder.build(ReportQueryBuilder.java:228) org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.prepare(AbstractDataEngine.java:136) org.eclipse.birt.report.engine.executor.ReportExecutor.execute(ReportExecutor.java:94) org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:59) org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplciateReportExecutor.execute(SuppressDuplciateReportExecutor.java:50) org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:59) org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:138)
data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/impl/QueryResults.java
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.core.util.IOUtil;
import org.eclipse.birt.data.engine.api.DataEngineContext;
import org.eclipse.birt.data.engine.api.IBaseExpression;
import org.eclipse.birt.data.engine.api.IBaseQueryDefinition;
import org.eclipse.birt.data.engine.api.IPreparedQuery;
import org.eclipse.birt.data.engine.api.IQueryDefinition;
import org.eclipse.birt.data.engine.api.IQueryResults;
import org.eclipse.birt.data.engine.api.IResultIterator;
import org.eclipse.birt.data.engine.api.IResultMetaData;
import org.eclipse.birt.data.engine.api.IScriptExpression;
import org.eclipse.birt.data.engine.api.ISubqueryDefinition;
import org.eclipse.birt.data.engine.core.DataException;
import org.eclipse.birt.data.engine.executor.cache.ResultSetCache;
import org.eclipse.birt.data.engine.executor.transform.CachedResultSet;
import org.eclipse.birt.data.engine.i18n.ResourceConstants;
import org.eclipse.birt.data.engine.impl.document.QueryResultIDUtil;
import org.eclipse.birt.data.engine.impl.document.StreamWrapper;
import org.eclipse.birt.data.engine.odi.IResultClass;
import org.eclipse.birt.data.engine.odi.IResultObject;
import org.mozilla.javascript.Scriptable;
/** 
 * A report query's results opened and ready for data retrieval.  
 * A query results could contain multiple result sets.
 * This is intended to be used by both Factory and Presentation Engines
 * in BIRT, including later releases when a report document persists.
 * Beyond Release 1, this would include methods to save and restore
 * results in a persisted Report Document.
 */
public class QueryResults implements IQueryResults, IQueryService