public override bool Read() { if (OrderByValuesQueue.IsEmpty()) { return(false); } if (IsFirstNext) { IsFirstNext = false; return(true); } OrderByValue firstOrderByValue = OrderByValuesQueue.Poll(); if (firstOrderByValue.MoveNext()) { OrderByValuesQueue.Offer(firstOrderByValue); } if (OrderByValuesQueue.IsEmpty()) { return(false); } SetCurrentStreamDataReader(OrderByValuesQueue.Peek().GetStreamDataReader()); return(true); }
public GroupByStreamMergedDataReader(IDictionary <string, int> labelAndIndexMap, List <IStreamDataReader> streamDataReaders, SelectCommandContext selectCommandContext, SchemaMetaData schemaMetaData) : base(streamDataReaders, selectCommandContext, schemaMetaData) { this._selectCommandContext = selectCommandContext; _currentRow = new List <object>(labelAndIndexMap.Count); _currentGroupByValues = OrderByValuesQueue.IsEmpty() ? new List <object>(0) : new GroupByValue(GetCurrentStreamDataReader(), selectCommandContext.GetGroupByContext().GetItems()).GetGroupValues(); }
private void OrderResultSetsToQueue(List <IStreamDataReader> streamDataReaders, SelectCommandContext selectCommandContext, SchemaMetaData schemaMetaData) { foreach (var queryResult in streamDataReaders) { OrderByValue orderByValue = new OrderByValue(queryResult, OrderByItems, selectCommandContext, schemaMetaData); if (orderByValue.MoveNext()) { OrderByValuesQueue.Offer(orderByValue); } } SetCurrentStreamDataReader(OrderByValuesQueue.IsEmpty() ? streamDataReaders[0] : OrderByValuesQueue.Peek().GetStreamDataReader()); }
public override bool Read() { _currentRow.Clear(); if (OrderByValuesQueue.IsEmpty()) { return(false); } if (IsFirstNext) { base.Read(); } if (AggregateCurrentGroupByRowAndNext()) { _currentGroupByValues = new GroupByValue(GetCurrentStreamDataReader(), _selectCommandContext.GetGroupByContext().GetItems()).GetGroupValues(); } return(true); }