streamForRowIndexInfo ),
streamForRowIndexInfo, streamForParentIndexInfo ),
		private void saveResultIterator( IResultIterator odiResult,				int groupLevel, int[] subQueryInfo ) throws DataException		{			try			{				// save the information of result class and group information				OutputStream streamForDataSet = null;				OutputStream streamForResultClass = null;								OutputStream streamForGroupInfo = null;								OutputStream streamForRowIndexInfo = null;								boolean isSubQuery = streamManager.isSubquery( );				if ( streamManager.isSecondRD( ) == false )				{					if ( context.getMode( ) == DataEngineContext.MODE_GENERATION							&& isSubQuery == false )					{						streamForResultClass = streamManager.getOutStream( DataEngineContext.DATASET_META_STREAM, StreamManager.ROOT_STREAM,								StreamManager.SELF_SCOPE );						streamForDataSet = streamManager.getOutStream( DataEngineContext.DATASET_DATA_STREAM,								StreamManager.ROOT_STREAM,								StreamManager.SELF_SCOPE );					}				}				else				{					streamForRowIndexInfo = streamManager.getOutStream( DataEngineContext.ROW_INDEX_STREAM,							StreamManager.ROOT_STREAM,							StreamManager.SELF_SCOPE );				}				streamForGroupInfo = streamManager.getOutStream( DataEngineContext.GROUP_INFO_STREAM,						StreamManager.ROOT_STREAM,						StreamManager.SELF_SCOPE );								odiResult.doSave( new StreamWrapper( streamForResultClass,						streamForDataSet,						streamForGroupInfo,						streamForRowIndexInfo ),						isSubQuery,						RDSave.this.exprNameSet );								if ( streamForResultClass != null )					streamForResultClass.close( );								if ( streamForGroupInfo != null )					streamForGroupInfo.close( );								if ( streamForRowIndexInfo != null )					streamForRowIndexInfo.close( );								if ( streamForDataSet != null )					streamForDataSet.close();								// save the information of sub query information				// notice, sub query name is used instead of sub query id				if ( isSubQuery == true						&& streamManager.hasOutStream( DataEngineContext.SUBQUERY_INFO_STREAM,								StreamManager.SUB_QUERY_ROOT_STREAM,								StreamManager.SELF_SCOPE ) == false )				{					// save info related with sub query info					OutputStream streamForSubQuery = streamManager.getOutStream( DataEngineContext.SUBQUERY_INFO_STREAM,							StreamManager.SUB_QUERY_ROOT_STREAM,							StreamManager.SELF_SCOPE );					RDSubQueryUtil.doSave( streamForSubQuery,							groupLevel,							subQueryInfo );					streamForSubQuery.close( );				}			}			catch ( IOException e )			{				throw new DataException( ResourceConstants.RD_SAVE_ERROR,						e,						"Result Set" );			}				}