internal async Task <CosmosQueryResponse <T> > NextResultSetAsync <T>( int?maxItemCount, string continuationToken, CosmosRequestOptions options, object state, CancellationToken cancellationToken) { CosmosQueryRequestOptions cosmosQueryRequestOptions = options as CosmosQueryRequestOptions ?? new CosmosQueryRequestOptions(); FeedOptions feedOptions = cosmosQueryRequestOptions.ToFeedOptions(); feedOptions.RequestContinuation = continuationToken; feedOptions.MaxItemCount = maxItemCount; IDocumentQuery <T> documentClientResult = this.client.DocumentClient.CreateDocumentQuery <T>( collectionLink: this.container.LinkUri.OriginalString, feedOptions: feedOptions, querySpec: state as SqlQuerySpec).AsDocumentQuery(); try { FeedResponse <T> feedResponse = await documentClientResult.ExecuteNextAsync <T>(cancellationToken); return(CosmosQueryResponse <T> .CreateResponse <T>(feedResponse, feedResponse.ResponseContinuation, documentClientResult.HasMoreResults)); } catch (DocumentClientException exception) { throw new CosmosException( message: exception.Message, statusCode: exception.StatusCode.HasValue ? exception.StatusCode.Value : HttpStatusCode.InternalServerError, subStatusCode: (int)exception.GetSubStatus(), activityId: exception.ActivityId, requestCharge: exception.RequestCharge); } }
public override CosmosResultSetIterator CreateItemQueryAsStream( CosmosSqlQueryDefinition sqlQueryDefinition, int maxConcurrency, object partitionKey = null, int?maxItemCount = null, string continuationToken = null, CosmosQueryRequestOptions requestOptions = null) { requestOptions = requestOptions ?? new CosmosQueryRequestOptions(); requestOptions.maxConcurrency = maxConcurrency; requestOptions.EnableCrossPartitionQuery = true; FeedOptions feedOptions = requestOptions.ToFeedOptions(); feedOptions.RequestContinuation = continuationToken; feedOptions.MaxItemCount = maxItemCount; if (partitionKey != null) { PartitionKey pk = new PartitionKey(partitionKey); feedOptions.PartitionKey = pk; } DocumentQuery <CosmosQueryResponse> documentQuery = (DocumentQuery <CosmosQueryResponse>) this.client.DocumentClient.CreateDocumentQuery <CosmosQueryResponse>( collectionLink: this.container.LinkUri.OriginalString, feedOptions: feedOptions, querySpec: sqlQueryDefinition.ToSqlQuerySpec()); return(new CosmosResultSetIteratorCore( maxItemCount, continuationToken, requestOptions, this.QueryRequestExecutor, documentQuery)); }