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);
 }