newColumn = true;
	boolean next( ) throws DataException	{		if ( dis == null )		{			is = context.getInputStream( queryResultID,					subQueryID,					DataEngineContext.EXPR_VALUE_STREAM );			bis = new BufferedInputStream( is );			try			{				dis = new DataInputStream( bis );				rowCount = IOUtil.readInt( dis );			}			catch ( IOException e )			{				throw new DataException( ResourceConstants.RD_LOAD_ERROR,						e,						"result data" );			}			InputStream stream = context.getInputStream( queryResultID,					subQueryID,					DataEngineContext.GROUP_INFO_STREAM );			BufferedInputStream bis2 = new BufferedInputStream( stream );			rdGroupUtil = new RDGroupUtil( bis2, new CacheProviderImpl( this ) );			try			{				bis2.close( );				stream.close( );			}			catch ( IOException e )			{				// ignore it			}		}		newColumn = true;		boolean hasNext = currPos++ < rowCount;		this.rdGroupUtil.next( hasNext );				return hasNext;	}