Exemple #1
0
        public QueryResultWithIncludes Query(string index, IndexQuery query, CancellationToken externalCancellationToken)
        {
            QueryResultWithIncludes result = null;

            using (var cts = CancellationTokenSource.CreateLinkedTokenSource(externalCancellationToken, WorkContext.CancellationToken))
            {
                var cancellationToken = cts.Token;

                TransactionalStorage.Batch(
                    accessor =>
                {
                    using (var op = new DatabaseQueryOperation(Database, index, query, accessor, cancellationToken)
                    {
                        ShouldSkipDuplicateChecking = query.SkipDuplicateChecking
                    })
                    {
                        var list = new List <RavenJObject>();
                        op.Init();
                        op.Execute(list.Add);
                        op.Result.Results = list;
                        result            = op.Result;
                    }
                });
            }

            return(result);
        }
Exemple #2
0
            public void Execute(Action <RavenJObject> onResult)
            {
                using (new CurrentTransformationScope(database, docRetriever))
                {
                    foreach (var result in results)
                    {
                        cancellationToken.ThrowIfCancellationRequested();
                        onResult(result);
                    }
                    if (transformerErrors.Count > 0)
                    {
                        throw new InvalidOperationException("The transform results function failed.\r\n" + string.Join("\r\n", transformerErrors));
                    }
                }

                Result = new QueryResultWithIncludes
                {
                    IndexName = indexName,
                    IsStale   = stale,
                    NonAuthoritativeInformation = nonAuthoritativeInformation,
                    SkippedResults        = query.SkippedResults.Value,
                    TotalResults          = query.TotalSize.Value,
                    IndexTimestamp        = indexTimestamp.Item1,
                    IndexEtag             = indexTimestamp.Item2,
                    ResultEtag            = resultEtag,
                    IdsToInclude          = idsToLoad,
                    LastQueryTime         = SystemTime.UtcNow,
                    Highlightings         = highlightings,
                    DurationMilliseconds  = duration.ElapsedMilliseconds,
                    ScoreExplanations     = scoreExplanations,
                    TimingsInMilliseconds = NormalizeTimings()
                };
            }
Exemple #3
0
            protected override bool HandleWork()
            {
                QueryResultWithIncludes queryResults = Database.Queries.Query("Notifications/Temp", new IndexQuery(), Database.WorkContext.CancellationToken);

                foreach (RavenJObject document in queryResults.Results)
                {
                    string id = ((RavenJObject)document["@metadata"]).Value <string>("@id");
                    Database.Documents.Delete(id, null, null);
                }

                return(true);
            }
Exemple #4
0
        public QueryResultWithIncludes Query(string index, IndexQuery query, CancellationToken externalCancellationToken)
        {
            DateTime?showTimingByDefaultUntil = WorkContext.ShowTimingByDefaultUntil;

            if (showTimingByDefaultUntil != null)
            {
                if (showTimingByDefaultUntil < SystemTime.UtcNow)                 // expired, reset
                {
                    WorkContext.ShowTimingByDefaultUntil = null;
                }
                else
                {
                    query.ShowTimings = true;
                }
            }

            QueryResultWithIncludes result = null;

            using (var cts = CancellationTokenSource.CreateLinkedTokenSource(externalCancellationToken, WorkContext.CancellationToken))
            {
                TransactionalStorage.Batch(
                    accessor =>
                {
                    using (var op = new DatabaseQueryOperation(Database, index, query, accessor, cts)
                    {
                        ShouldSkipDuplicateChecking = query.SkipDuplicateChecking
                    })
                    {
                        var list = new List <RavenJObject>();
                        op.Init();
                        op.Execute(list.Add);
                        op.Result.Results = list;
                        result            = op.Result;
                    }
                });
            }

            return(result);
        }
Exemple #5
0
        private static void ReportQuery(StringBuilder sb, IndexQuery indexQuery, Stopwatch sp, QueryResultWithIncludes result)
        {
            sb.Append("\tQuery: ")
            .Append(indexQuery.Query)
            .AppendLine();
            sb.Append("\t").AppendFormat("Time: {0:#,#;;0} ms", sp.ElapsedMilliseconds).AppendLine();

            if (result == null)
            {
                return;
            }

            sb.Append("\tIndex: ")
            .AppendLine(result.IndexName);
            sb.Append("\t").AppendFormat("Results: {0:#,#;;0} returned out of {1:#,#;;0} total.", result.Results.Count, result.TotalResults).AppendLine();

            if (result.TimingsInMilliseconds != null)
            {
                sb.Append("\tTiming:").AppendLine();
                foreach (var timing in result.TimingsInMilliseconds)
                {
                    sb.Append("\t").Append(timing.Key).Append(": ").Append(timing.Value).AppendLine();
                }
            }
        }