public async Task <DocumentQueryResult> ExecuteQuery(string indexName, IndexQueryServerSide query, StringValues includes, long?existingResultEtag, OperationCancelToken token) { DocumentQueryResult result; var sw = Stopwatch.StartNew(); if (DynamicQueryRunner.IsDynamicIndex(indexName)) { var runner = new DynamicQueryRunner(_database.IndexStore, _database.TransformerStore, _database.DocumentsStorage, _documentsContext, token); result = await runner.Execute(indexName, query, existingResultEtag); result.DurationMilliseconds = (long)sw.Elapsed.TotalMilliseconds; return(result); } var index = GetIndex(indexName); if (existingResultEtag.HasValue) { var etag = index.GetIndexEtag(); if (etag == existingResultEtag) { return(DocumentQueryResult.NotModifiedResult); } } result = await index.Query(query, _documentsContext, token); result.DurationMilliseconds = (long)sw.Elapsed.TotalMilliseconds; return(result); }
public List <DynamicQueryToIndexMatcher.Explanation> ExplainDynamicIndexSelection(string indexName, IndexQueryServerSide indexQuery) { if (DynamicQueryRunner.IsDynamicIndex(indexName) == false) { throw new InvalidOperationException("Explain can only work on dynamic indexes"); } var runner = new DynamicQueryRunner(_database.IndexStore, _database.TransformerStore, _database.DocumentsStorage, _documentsContext, OperationCancelToken.None); return(runner.ExplainIndexSelection(indexName, indexQuery)); }
public async Task ExecuteStreamQuery(string indexName, IndexQueryServerSide query, HttpResponse response, BlittableJsonTextWriter writer, OperationCancelToken token) { if (DynamicQueryRunner.IsDynamicIndex(indexName)) { var runner = new DynamicQueryRunner(_database.IndexStore, _database.TransformerStore, _database.DocumentsStorage, _documentsContext, token); await runner.ExecuteStream(response, writer, indexName, query).ConfigureAwait(false); } var index = GetIndex(indexName); await index.StreamQuery(response, writer, query, _documentsContext, token); }
public IndexEntriesQueryResult ExecuteIndexEntriesQuery(string indexName, IndexQueryServerSide query, long?existingResultEtag, OperationCancelToken token) { if (DynamicQueryRunner.IsDynamicIndex(indexName)) { var runner = new DynamicQueryRunner(_database.IndexStore, _database.TransformerStore, _database.DocumentsStorage, _documentsContext, token); return(runner.ExecuteIndexEntries(indexName, query, existingResultEtag)); } var index = GetIndex(indexName); if (existingResultEtag.HasValue) { var etag = index.GetIndexEtag(); if (etag == existingResultEtag) { return(IndexEntriesQueryResult.NotModifiedResult); } } return(index.IndexEntries(query, _documentsContext, token)); }