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); }
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() }; }
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); }
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); }
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(); } } }