Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }
Example #4
0
        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));
        }