public override Task <DocumentQueryResult> ExecuteQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, long?existingResultEtag, OperationCancelToken token) { var result = new DocumentQueryResult(); if (documentsContext.Transaction == null || documentsContext.Transaction.Disposed) { documentsContext.OpenReadTransaction(); } FillCountOfResultsAndIndexEtag(result, query.Metadata, documentsContext); if (query.Metadata.HasOrderByRandom == false && existingResultEtag.HasValue) { if (result.ResultEtag == existingResultEtag) { return(Task.FromResult(DocumentQueryResult.NotModifiedResult)); } } var collection = GetCollectionName(query.Metadata.CollectionName, out var indexName); using (QueryRunner.MarkQueryAsRunning(indexName, query, token)) { result.IndexName = indexName; ExecuteCollectionQuery(result, query, collection, documentsContext, pulseReadingTransaction: false, token.Token); return(Task.FromResult(result)); } }
public override async Task <DocumentQueryResult> ExecuteQuery(IndexQueryServerSide query, QueryOperationContext queryContext, long?existingResultEtag, OperationCancelToken token) { var result = new DocumentQueryResult(); if (queryContext.AreTransactionsOpened() == false) { queryContext.OpenReadTransaction(); } FillCountOfResultsAndIndexEtag(result, query.Metadata, queryContext); if (query.Metadata.HasOrderByRandom == false && existingResultEtag.HasValue) { if (result.ResultEtag == existingResultEtag) { return(DocumentQueryResult.NotModifiedResult); } } var collection = GetCollectionName(query.Metadata.CollectionName, out var indexName); using (QueryRunner.MarkQueryAsRunning(indexName, query, token)) { result.IndexName = indexName; await ExecuteCollectionQueryAsync(result, query, collection, queryContext, pulseReadingTransaction : false, token.Token); return(result); } }
public override Task <DocumentQueryResult> ExecuteQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, long?existingResultEtag, OperationCancelToken token) { var result = new DocumentQueryResult(); documentsContext.OpenReadTransaction(); FillCountOfResultsAndIndexEtag(result, query.Metadata, documentsContext); if (query.Metadata.HasOrderByRandom == false && existingResultEtag.HasValue) { if (result.ResultEtag == existingResultEtag) { return(Task.FromResult(DocumentQueryResult.NotModifiedResult)); } } ExecuteCollectionQuery(result, query, query.Metadata.CollectionName, documentsContext, token.Token); return(Task.FromResult(result)); }
public Task <DocumentQueryResult> Execute(string dynamicIndexName, IndexQueryServerSide query, long?existingResultEtag) { string collection; var index = MatchIndex(dynamicIndexName, query, true, out collection); if (index == null) { var result = new DocumentQueryResult(); ExecuteCollectionQuery(result, query, collection); return(new CompletedTask <DocumentQueryResult>(result)); } if (existingResultEtag.HasValue) { var etag = index.GetIndexEtag(); if (etag == existingResultEtag) { return(new CompletedTask <DocumentQueryResult>(DocumentQueryResult.NotModifiedResult)); } } return(index.Query(query, _context, _token)); }
public async Task <DocumentQueryResult> Execute(IndexQueryServerSide query, long?existingResultEtag) { var tuple = await MatchIndex(query, true); var index = tuple.Index; var collection = tuple.Collection; if (index == null) { var result = new DocumentQueryResult(); _context.OpenReadTransaction(); FillCountOfResultsAndIndexEtag(result, collection); if (existingResultEtag.HasValue) { if (result.ResultEtag == existingResultEtag) { return(DocumentQueryResult.NotModifiedResult); } } ExecuteCollectionQuery(result, query, collection); return(result); } if (existingResultEtag.HasValue) { var etag = index.GetIndexEtag(); if (etag == existingResultEtag) { return(DocumentQueryResult.NotModifiedResult); } } return(await index.Query(query, _context, _token)); }
public static void WriteDocumentQueryResult(this BlittableJsonTextWriter writer, JsonOperationContext context, DocumentQueryResult result, bool metadataOnly, out int numberOfResults) { writer.WriteStartObject(); writer.WritePropertyName(nameof(result.TotalResults)); writer.WriteInteger(result.TotalResults); writer.WriteComma(); writer.WritePropertyName(nameof(result.SkippedResults)); writer.WriteInteger(result.SkippedResults); writer.WriteComma(); writer.WritePropertyName(nameof(result.DurationInMs)); writer.WriteInteger(result.DurationInMs); writer.WriteComma(); writer.WriteArray(nameof(result.IncludedPaths), result.IncludedPaths); writer.WriteComma(); writer.WriteQueryResult(context, result, metadataOnly, out numberOfResults, partial: true); writer.WriteEndObject(); }