Esempio n. 1
0
 private OrderByDocumentQueryExecutionContext(
     IDocumentQueryClient client,
     ResourceType resourceTypeEnum,
     Type resourceType,
     Expression expression,
     FeedOptions feedOptions,
     string resourceLink,
     string rewrittenQuery,
     bool isContinuationExpected,
     bool getLazyFeedResponse,
     OrderByConsumeComparer consumeComparer,
     string collectionRid,
     Guid correlatedActivityId) :
     base(
         client,
         resourceTypeEnum,
         resourceType,
         expression,
         feedOptions,
         resourceLink,
         rewrittenQuery,
         correlatedActivityId,
         isContinuationExpected: isContinuationExpected,
         getLazyFeedResponse: getLazyFeedResponse,
         isDynamicPageSizeAllowed: true)
 {
     this.collectionRid = collectionRid;
     this.documentProducerConsumerQueue = new PriorityQueue <DocumentProducer <OrderByQueryResult> >(consumeComparer);
     this.filters         = new Dictionary <string, string>();
     this.consumeComparer = consumeComparer;
 }
Esempio n. 2
0
            /// <summary>
            /// Initializes a new instance of the OrderByEqualityComparer class.
            /// </summary>
            /// <param name="orderByConsumeComparer">The order by consume comparer.</param>
            public OrderByEqualityComparer(OrderByConsumeComparer orderByConsumeComparer)
            {
                if (orderByConsumeComparer == null)
                {
                    throw new ArgumentNullException($"{nameof(orderByConsumeComparer)} can not be null.");
                }

                this.orderByConsumeComparer = orderByConsumeComparer;
            }
 /// <summary>
 /// Initializes a new instance of the CosmosOrderByItemQueryExecutionContext class.
 /// </summary>
 /// <param name="initPararms">The params used to construct the base class.</param>
 /// For cross partition order by queries a query like "SELECT c.id, c.field_0 ORDER BY r.field_7 gets rewritten as:
 /// <![CDATA[
 /// SELECT r._rid, [{"item": r.field_7}] AS orderByItems, {"id": r.id, "field_0": r.field_0} AS payload
 /// FROM r
 /// WHERE({ document db - formattable order by query - filter})
 /// ORDER BY r.field_7]]>
 /// This is needed because we need to add additional filters to the query when we resume from a continuation,
 /// and it lets us easily parse out the _rid orderByItems, and payload without parsing the entire document (and having to remember the order by field).
 /// <param name="consumeComparer">Comparer used to internally compare documents from different sorted partitions.</param>
 private CosmosOrderByItemQueryExecutionContext(
     CosmosQueryContext initPararms,
     OrderByConsumeComparer consumeComparer)
     : base(
         initPararms,
         consumeComparer,
         CosmosOrderByItemQueryExecutionContext.FetchPriorityFunction,
         new OrderByEqualityComparer(consumeComparer))
 {
 }
Esempio n. 4
0
 /// <summary>
 /// Initializes a new instance of the OrderByDocumentQueryExecutionContext class.
 /// </summary>
 /// <param name="initPararms">The params used to construct the base class.</param>
 /// <param name="rewrittenQuery">
 /// For cross partition order by queries a query like "SELECT c.id, c.field_0 ORDER BY r.field_7 gets rewritten as:
 /// <![CDATA[
 /// SELECT r._rid, [{"item": r.field_7}] AS orderByItems, {"id": r.id, "field_0": r.field_0} AS payload
 /// FROM r
 /// WHERE({ document db - formattable order by query - filter})
 /// ORDER BY r.field_7]]>
 /// This is needed because we need to add additional filters to the query when we resume from a continuation,
 /// and it lets us easily parse out the _rid orderByItems, and payload without parsing the entire document (and having to remember the order by field).
 /// </param>
 /// <param name="consumeComparer">Comparer used to internally compare documents from different sorted partitions.</param>
 private OrderByDocumentQueryExecutionContext(
     DocumentQueryExecutionContextBase.InitParams initPararms,
     string rewrittenQuery,
     OrderByConsumeComparer consumeComparer) :
     base(
         initPararms,
         rewrittenQuery,
         consumeComparer,
         OrderByDocumentQueryExecutionContext.FetchPriorityFunction,
         new OrderByEqualityComparer(consumeComparer))
 {
 }
 /// <summary>
 /// Initializes a new instance of the CosmosOrderByItemQueryExecutionContext class.
 /// </summary>
 /// <param name="initPararms">The params used to construct the base class.</param>
 /// For cross partition order by queries a query like "SELECT c.id, c.field_0 ORDER BY r.field_7 gets rewritten as:
 /// <![CDATA[
 /// SELECT r._rid, [{"item": r.field_7}] AS orderByItems, {"id": r.id, "field_0": r.field_0} AS payload
 /// FROM r
 /// WHERE({ document db - formattable order by query - filter})
 /// ORDER BY r.field_7]]>
 /// This is needed because we need to add additional filters to the query when we resume from a continuation,
 /// and it lets us easily parse out the _rid orderByItems, and payload without parsing the entire document (and having to remember the order by field).
 /// <param name="maxConcurrency">The max concurrency</param>
 /// <param name="maxBufferedItemCount">The max buffered item count</param>
 /// <param name="maxItemCount">Max item count</param>
 /// <param name="consumeComparer">Comparer used to internally compare documents from different sorted partitions.</param>
 private CosmosOrderByItemQueryExecutionContext(
     CosmosQueryContext initPararms,
     int?maxConcurrency,
     int?maxItemCount,
     int?maxBufferedItemCount,
     OrderByConsumeComparer consumeComparer)
     : base(
         queryContext: initPararms,
         maxConcurrency: maxConcurrency,
         maxItemCount: maxItemCount,
         maxBufferedItemCount: maxBufferedItemCount,
         moveNextComparer: consumeComparer,
         fetchPrioirtyFunction: CosmosOrderByItemQueryExecutionContext.FetchPriorityFunction,
         equalityComparer: new OrderByEqualityComparer(consumeComparer))
 {
 }